import type { ImageMode } from '@uni-helper/uni-app-types';
import type { TabBarItem } from '@uni-helper/vite-plugin-uni-pages';

/** TabBar 类型 */
export type TabBarType = { [P in keyof TabBarItem as Exclude<P, 'pagePath'>]: TabBarItem[P] } & {
  /** 编号 */
  id: string | number;
  /** 页面路径，必须在 pages 中先定义。 */
  pagePath?: string;
  /** 授权标识 */
  authority?: string | string[];
  /** 图标类型 */
  iconType: 'wot' | 'unocss' | 'iconfont' | 'local';
  /** 图标大小 */
  iconSize?: string;
  /** 图标裁剪、缩放的模式，仅 local 类型有效。 */
  iconMode?: ImageMode;
  /** 图标 */
  icon: string;
  /** 选中图标 */
  selectedIcon?: string;
  /** 头像类型 */
  avatarType?: 'wot' | 'unocss' | 'iconfont' | 'local';
  /** 头像大小 */
  avatarSize?: string;
  /** 头像裁剪、缩放的模式，仅 local 类型有效。 */
  avatarMode?: ImageMode;
  /** 头像 */
  avatar?: string;
  /** 头像文字 */
  avatarText?: string;
  /** 是否为按钮 */
  button?: boolean;
  /** 该项是否显示，默认显示。 */
  visible?: boolean;
};

/** TabBar 存储状态 */
export interface TabBarState {
  /** 选中标签的索引(值或者名称) */
  index: number | string;
  /** TabBar 列表 */
  list?: (TabBarType & {
    /** 序号 */
    order: number;
  })[];
}
